home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Rozne / HTTrack 3.40-2 / httrack-3.40-2.exe / {app} / src_win / WinHTTrack / HtmlCtrl.cpp < prev    next >
C/C++ Source or Header  |  2004-02-14  |  3KB  |  98 lines

  1. ////////////////////////////////////////////////////////////////
  2. // Microsoft Systems Journal -- December 1999
  3. // If this code works, it was written by Paul DiLascia.
  4. // If not, I don't know who wrote it.
  5. // Compiles with Visual C++ 6.0, runs on Windows 98 and probably NT too.
  6. //
  7. #include "StdAfx.h"
  8. #include "HtmlCtrl.h"
  9.  
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15.  
  16. IMPLEMENT_DYNAMIC(CHtmlCtrl, CHtmlView)
  17. BEGIN_MESSAGE_MAP(CHtmlCtrl, CHtmlView)
  18.     ON_WM_DESTROY()
  19.     ON_WM_MOUSEACTIVATE()
  20. END_MESSAGE_MAP()
  21.  
  22. //////////////////
  23. // Create control in same position as an existing static control with
  24. // the same ID (could be any kind of control, really)
  25. //
  26. BOOL CHtmlCtrl::CreateFromStatic(UINT nID, CWnd* pParent)
  27. {
  28.     CStatic wndStatic;
  29.     if (!wndStatic.SubclassDlgItem(nID, pParent))
  30.         return FALSE;
  31.  
  32.     // Get static control rect, convert to parent's client coords.
  33.     CRect rc;
  34.     wndStatic.GetWindowRect(&rc);
  35.     pParent->ScreenToClient(&rc);
  36.     wndStatic.DestroyWindow();
  37.  
  38.     // create HTML control (CHtmlView)
  39.     return Create(NULL,                         // class name
  40.         NULL,                                         // title
  41.         (WS_CHILD | WS_VISIBLE ),             // style
  42.         rc,                                         // rectangle
  43.         pParent,                                     // parent
  44.         nID,                                         // control ID
  45.         NULL);                                     // frame/doc context not used
  46. }
  47.  
  48. ////////////////
  49. // Override to avoid CView stuff that assumes a frame.
  50. //
  51. void CHtmlCtrl::OnDestroy()
  52. {
  53.     // This is probably unecessary since ~CHtmlView does it, but
  54.     // safer to mimic CHtmlView::OnDestroy.
  55.     if (m_pBrowserApp) {
  56.         m_pBrowserApp.Release();
  57.     }
  58.     CWnd::OnDestroy(); // bypass CView doc/frame stuff
  59. }
  60.  
  61. ////////////////
  62. // Override to avoid CView stuff that assumes a frame.
  63. //
  64. int CHtmlCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT msg)
  65. {
  66.     // bypass CView doc/frame stuff
  67.     return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, msg);
  68. }
  69.  
  70. //////////////////
  71. // Override navigation handler to pass to "app:" links to virtual handler.
  72. // Cancels the navigation in the browser, since app: is a pseudo-protocol.
  73. //
  74. void CHtmlCtrl::OnBeforeNavigate2( LPCTSTR lpszURL,
  75.     DWORD nFlags,
  76.     LPCTSTR lpszTargetFrameName,
  77.     CByteArray& baPostedData,
  78.     LPCTSTR lpszHeaders,
  79.     BOOL* pbCancel )
  80. {
  81.     const char APP_PROTOCOL[] = "app:";
  82.     int len = _tcslen(APP_PROTOCOL);
  83.     if (_tcsnicmp(lpszURL, APP_PROTOCOL, len)==0) {
  84.         OnAppCmd(lpszURL + len);
  85.         *pbCancel = TRUE;
  86.     }
  87. }
  88.  
  89. //////////////////
  90. // Called when the browser attempts to navigate to "app:foo"
  91. // with "foo" as lpszWhere. Override to handle app commands.
  92. //
  93. void CHtmlCtrl::OnAppCmd(LPCTSTR lpszWhere)
  94. {
  95.     // default: do nothing
  96. }
  97.  
  98.